1. Field
The disclosure relates generally to an improved data processing system and more specifically to virtual environments. Even more specifically, the disclosure relates to images running on virtual machines in virtual environments.
2. Description of the Related Art
Virtual environments are commonly used in data processing systems. A virtual environment is software that runs a set of virtual machines on a set of data processing systems. A virtual machine is a collection of virtual hardware on which other software is run. The other software commonly includes an operating system. The virtual environment causes the data processing system to run commands sent by the other software to the virtual hardware on real-world hardware associated with the data processing system. Examples of virtual environments include Amazon EC2 by Amazon.com, Inc. in Seattle, Wash., VMWare ESXi by VMWare, Inc. in Palo Alto, Calif., and Microsoft Hyper-V by Microsoft, Inc. in Redmond, Wash.
The virtual environment causes the data processing system to run the commands differently, depending on the virtual hardware being accessed by the software running on the virtual machine. For example, commands to perform a calculation on a virtual processor are typically sent to the real-world processor to be performed. However, commands to store data on a virtual hard drive are typically stored in a set of files stored on a set of real-world disks. Each of the set of files may represent an entire drive for the virtual machine.
It is often desirable to convert a virtual machine from one virtual environment to another. For example, a company may convert a virtual machine running on Amazon EC2 to a virtual machine running on VMWare ESXi. Each virtual environment may have an image type for the virtual hard drive specific to the type of virtual environment. For example, a virtual hard drive used by Amazon EC2 may not be usable by VMWare ESXi. Additionally, each virtual environment may use different virtual hardware. A different device driver may be used to communicate with the different virtual hardware. Configuration settings may also vary between the virtual environments, such as network configuration settings.
Because of the differences in virtual environments, the process for converting between virtual environments typically involves creating a virtual machine in the new virtual environment and starting both the virtual machine in the new virtual environment and the virtual machine in the old virtual environment. The user then installs the desired operating system on the new virtual machine, installs the proper device drivers for the new virtual environment, and copies data from the old virtual machine to the new virtual machine.